Code coverage report for src/name-expression.js

Statements: 37.84% (14 / 37)      Branches: 0% (0 / 12)      Functions: 36.36% (4 / 11)      Lines: 40% (14 / 35)      Ignored: none     

All files » src/ » name-expression.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 721     1   1   1     1 1                   1       1     1   1 1                                   1                         1       1          
System.register([], function (_export) {
  'use strict';
 
  var NameExpression, NameBinder;
 
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
 
  return {
    setters: [],
    execute: function () {
      NameExpression = (function () {
        function NameExpression(name, mode) {
          _classCallCheck(this, NameExpression);
 
          this.property = name;
          this.discrete = true;
          this.mode = mode.replace(/-([a-z])/g, function (m, w) {
            return w.toUpperCase();
          });
        }
 
        NameExpression.prototype.createBinding = function createBinding(target) {
          return new NameBinder(this.property, target, this.mode);
        };
 
        return NameExpression;
      })();
 
      _export('NameExpression', NameExpression);
 
      NameBinder = (function () {
        function NameBinder(property, target, mode) {
          _classCallCheck(this, NameBinder);
 
          this.property = property;
 
          if (mode === 'element') {
            this.target = target;
          } else {
            this.target = target[mode];
 
            if (this.target === undefined) {
              throw new Error('Attempted to reference "' + mode + '", but it was not found on the target element.');
            } else {
              this.target = this.target.executionContext || this.target;
            }
          }
        }
 
        NameBinder.prototype.bind = function bind(source) {
          if (this.source) {
            if (this.source === source) {
              return;
            }
 
            this.unbind();
          }
 
          this.source = source;
          source[this.property] = this.target;
        };
 
        NameBinder.prototype.unbind = function unbind() {
          this.source[this.property] = null;
        };
 
        return NameBinder;
      })();
    }
  };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2JpbmRpbmcvc3JjL25hbWUtZXhwcmVzc2lvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7TUFBYSxjQUFjLEVBWXJCLFVBQVU7Ozs7Ozs7QUFaSCxvQkFBYztBQUNkLGlCQURBLGNBQWMsQ0FDYixJQUFJLEVBQUUsSUFBSSxFQUFDO2dDQURaLGNBQWM7O0FBRXZCLGNBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLGNBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLGNBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsVUFBQyxDQUFDLEVBQUUsQ0FBQzttQkFBSyxDQUFDLENBQUMsV0FBVyxFQUFFO1dBQUEsQ0FBQyxDQUFDO1NBQ2xFOztBQUxVLHNCQUFjLFdBT3pCLGFBQWEsR0FBQSx1QkFBQyxNQUFNLEVBQUM7QUFDbkIsaUJBQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pEOztlQVRVLGNBQWM7OztnQ0FBZCxjQUFjOztBQVlyQixnQkFBVTtBQUNILGlCQURQLFVBQVUsQ0FDRixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQ0FEL0IsVUFBVTs7QUFFWixjQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzs7QUFFekIsY0FBRyxJQUFJLEtBQUssU0FBUyxFQUFDO0FBQ3BCLGdCQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztXQUN0QixNQUFNO0FBQ0wsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUUzQixnQkFBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBQztBQUMzQixvQkFBTSxJQUFJLEtBQUssOEJBQTRCLElBQUksb0RBQWlELENBQUE7YUFDakcsTUFBSTtBQUNILGtCQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUMzRDtXQUNGO1NBQ0Y7O0FBZkcsa0JBQVUsV0FpQmQsSUFBSSxHQUFBLGNBQUMsTUFBTSxFQUFDO0FBQ1YsY0FBRyxJQUFJLENBQUMsTUFBTSxFQUFDO0FBQ2IsZ0JBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUM7QUFDeEIscUJBQU87YUFDUjs7QUFFRCxnQkFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1dBQ2Y7O0FBRUQsY0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNyQzs7QUE1Qkcsa0JBQVUsV0E4QmQsTUFBTSxHQUFBLGtCQUFFO0FBQ04sY0FBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ25DOztlQWhDRyxVQUFVIiwiZmlsZSI6Ii9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2JpbmRpbmcvc3JjL25hbWUtZXhwcmVzc2lvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBOYW1lRXhwcmVzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKG5hbWUsIG1vZGUpe1xuICAgIHRoaXMucHJvcGVydHkgPSBuYW1lO1xuICAgIHRoaXMuZGlzY3JldGUgPSB0cnVlO1xuICAgIHRoaXMubW9kZSA9IG1vZGUucmVwbGFjZSgvLShbYS16XSkvZywgKG0sIHcpID0+IHcudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICBjcmVhdGVCaW5kaW5nKHRhcmdldCl7XG4gICAgcmV0dXJuIG5ldyBOYW1lQmluZGVyKHRoaXMucHJvcGVydHksIHRhcmdldCwgdGhpcy5tb2RlKTtcbiAgfVxufVxuXG5jbGFzcyBOYW1lQmluZGVyIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHksIHRhcmdldCwgbW9kZSl7XG4gICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuXG4gICAgaWYobW9kZSA9PT0gJ2VsZW1lbnQnKXtcbiAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldCA9IHRhcmdldFttb2RlXTtcblxuICAgICAgaWYodGhpcy50YXJnZXQgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXR0ZW1wdGVkIHRvIHJlZmVyZW5jZSBcIiR7bW9kZX1cIiwgYnV0IGl0IHdhcyBub3QgZm91bmQgb24gdGhlIHRhcmdldCBlbGVtZW50LmApXG4gICAgICB9ZWxzZXtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0aGlzLnRhcmdldC5leGVjdXRpb25Db250ZXh0IHx8IHRoaXMudGFyZ2V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGJpbmQoc291cmNlKXtcbiAgICBpZih0aGlzLnNvdXJjZSl7XG4gICAgICBpZih0aGlzLnNvdXJjZSA9PT0gc291cmNlKXtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVuYmluZCgpO1xuICAgIH1cblxuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHNvdXJjZVt0aGlzLnByb3BlcnR5XSA9IHRoaXMudGFyZ2V0O1xuICB9XG5cbiAgdW5iaW5kKCl7XG4gICAgdGhpcy5zb3VyY2VbdGhpcy5wcm9wZXJ0eV0gPSBudWxsO1xuICB9XG59XG4iXX0=